import { reqOrderList } from '../../../api/orderList'
import { toast } from '@/utils/extendApi'
Page({
  // 页面的初始数据
  data: {
    orderList: [], // 订单列表数据
    page: 1, // 获取第几页数据
    limit: 10, // 一页几条数据
    total: 0, // 订单总条数
    isLoading: false // 标记上拉刷新数据是否已经返回(节流)
  },
  // 获取订单列表数据
  async getOrderList() {
    // 开启加载提示
    wx.showLoading({
      title: '加载中'
    })
    // 将isLoading设置为true，表示正在获取数据，此时不允许再次获取数据
    this.setData({
      isLoading: true
    })
    const result = await reqOrderList(this.data.page, this.data.limit)
    // 存储订单列表数据和总订单数
    this.setData({
      // 将本次获取的数据与已有的数据进行拼接
      orderList: this.data.orderList.concat(result.data.records),
      total: result.data.total
    })
    // 关闭加载提示
    wx.hideLoading()
    // 将isLoading设置为false，表示此次数据已经获取完毕可以再次获取数据
    this.setData({
      isLoading: false
    })
  },
  // 监听上拉加载更多
  onReachBottom() {
    // 从data中结构获取数据
    const { total, orderList, isLoading, page } = this.data
    // 判断数据是否已经获取完毕
    if (total === orderList.length) return toast('订单数据加载完毕')
    // 判断是否正在获取数据(节流)
    if (isLoading) retrun
    // page+1 继续获取订单列表数据
    this.setData({
      page: page + 1
    })
    this.getOrderList()
  },
  // 监听下拉刷新
  async onPullDownRefresh() {
    // 节流设置
    if (this.data.isLoading) return
    // 将page设置为1 并清空订单列表中的数据
    this.setData({
      page: 1,
      orderList: []
    })
    // 重新获取订单列表数据
    await this.getOrderList()
    // 手动关闭加载框
    wx.stopPullDownRefresh()
  },
  onLoad() {
    // 获取订单列表数据
    this.getOrderList()
  }
})
